package com.quxiu.system.mapper;

import java.util.Date;
import java.util.List;
import com.quxiu.system.domain.SysDataPushRecord;
import org.apache.ibatis.annotations.Param;

/**
 * 数据推送记录Mapper接口
 *
 * @author quxiu
 * @date 2024-01-19
 */
public interface SysDataPushRecordMapper {
    /**
     * 查询数据推送记录
     *
     * @param recordId 数据推送记录主键
     * @return 数据推送记录
     */
    public SysDataPushRecord selectSysDataPushRecordByRecordId(Long recordId);

    /**
     * 查询数据推送记录列表
     *
     * @param sysDataPushRecord 数据推送记录
     * @return 数据推送记录集合
     */
    public List<SysDataPushRecord> selectSysDataPushRecordList(SysDataPushRecord sysDataPushRecord);

    /**
     * 新增数据推送记录
     *
     * @param sysDataPushRecord 数据推送记录
     * @return 结果
     */
    public int insertSysDataPushRecord(SysDataPushRecord sysDataPushRecord);

    /**
     * 修改数据推送记录
     *
     * @param sysDataPushRecord 数据推送记录
     * @return 结果
     */
    public int updateSysDataPushRecord(SysDataPushRecord sysDataPushRecord);

    /**
     * 删除数据推送记录
     *
     * @param recordId 数据推送记录主键
     * @return 结果
     */
    public int deleteSysDataPushRecordByRecordId(Long recordId);

    /**
     * 批量删除数据推送记录
     *
     * @param recordIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysDataPushRecordByRecordIds(Long[] recordIds);

    /**
     * 根据appId删除数据
     * @param appId
     * @return
     */
    int deleteByAppId(String appId);

    /**
     * 根据appId和数据类型删除数据
     * @param appId
     * @return
     */
    int deleteByAppIdAndPushDataType(@Param("appId") String appId, @Param("pushDataType") String pushDataType);

    /**
     * 批量根据appId删除数据
     * @param appIds
     * @return
     */
    int deleteByAppIds(String[] appIds);

    /**
     * 删除推送成功的数据
     * @return
     */
    int deleteBySuccess();

    /**
     * 删除指定时间之前的数据
     * @param time
     * @return
     */
    int deleteBeforeCreateTime(Date time);

    /**
     * 更新推送结果
     * @param recordId 推送记录id
     * @param pushStatus 推送状态
     * @param pushResult 推送结果
     * @param pushLog 推送日志
     * @return
     */
    int updatePushResult(@Param("recordId") Long recordId, @Param("pushStatus") int pushStatus
            , @Param("pushResult") int pushResult, @Param("pushLog") String pushLog);
}
